package com.dzl.goods.service;


import com.dzl.admin.pojo.vo.LoginSysAdminVo;
import com.dzl.base.service.BaseService;
import com.dzl.brand.pojo.WelfareBrand;
import com.dzl.goods.pojo.WelfareGoods;
import com.dzl.goods.pojo.WelfareGoodsAttr;
import com.dzl.goods.pojo.dto.WelfareGoodsAttrCostPriceDto;
import com.dzl.goods.pojo.dto.WelfareGoodsBatchUpdateDto;
import com.dzl.goods.pojo.dto.WelfareGoodsManageAddDto;
import com.dzl.goods.pojo.query.WelfareGoodsAttrQuery;
import com.dzl.goods.pojo.query.WelfareGoodsDevAreaQuery;
import com.dzl.goods.pojo.query.WelfareGoodsManageQuery;
import com.dzl.goods.pojo.query.WelfareGoodsPageQuery;
import com.dzl.goods.pojo.vo.*;
import com.dzl.middleground.pojo.query.SearchGoodsQuery;
import com.dzl.middleground.pojo.vo.SearchGoodsListVo;
import com.dzl.moive.pojo.WelfareMovieInfo;
import com.github.pagehelper.PageInfo;

import java.util.List;
import java.util.Map;

/**
 * 商品表(WelfareGoods)表服务接口
 * @author ChenLong
 * @since 2021-05-18 10:01:42
 */
public interface WelfareGoodsService extends BaseService<WelfareGoods> {

    /**
     * 分页查询集采商品数据列表
     * @author liuguanjun
     * @date 2021-12-17 10:57:30
     * @param query 查询条件
     **/
    PageInfo<WelfareJicaiGoodsManageVo> getWelfareJicaiGoodsListPage(WelfareGoodsManageQuery query);

    /**
     * 获取商品管理列表--分页
     * @param query 商品管理查询实体类
     * @return java.util.List<com.dzl.goods.pojo.vo.WelfareGoodsManageVo>
     * @author ChenLong
     * @date 2021-05-29 11:44:36
     **/
    PageInfo<WelfareGoodsManageVo> getWelfareGoodsListPage(WelfareGoodsManageQuery query);

    /**
     * 企业客户选择api商品，弹窗数据列表，以sku维度查
     * @param query 查询条件
     * @author liuguanjun
     * @date 2021-11-24 09:54:08
     **/
    PageInfo<WelfareSkuGoodsVo> getWelfareGoodsAttrListPage(WelfareGoodsAttrQuery query);

    /**
     * 获取商品详细信息，后端展现
     * @param goodsId 商品id
     * @author liuguanjun
     * @since 2021-12-17 09:06:25
     **/
    WelfareGoodsDetailVo getGoodsInfoDetail(Integer goodsId);

    /**
     * 获取商品详细信息（以属性组分类），前端展现，包括一级skulist，二级skulist，三级skulist
     * @param goodsId 商品id
     * @return com.dzl.goods.entity.WelfareGoods
     * @author ChenLong
     * @since 2021-05-18 14:34:25
     **/
    WelfareGoodsDetailVo getGoodsInfoClassifySku(Integer goodsId);

    /**
     * 根据商品id查询商品sku的最低价最高价等
     * @param goodsId 商品id
     * @author liuguanjun
     * @date 2021-10-15 15:49:08
     **/
    WelfareGoodsManageVo getGoodsPriceAndQuantityByGoodsId(Integer goodsId);

    /**
     * 商品添加
     * @param welfareGoodsManageAddDto 商品dto实体类
     * @return java.util.Map
     * @author ChenLong
     * @date 2021-06-01 20:36:09
     **/
    Map<String, Object> addGoodsManage(WelfareGoodsManageAddDto welfareGoodsManageAddDto,LoginSysAdminVo loginInfo);

    /**
     * 商品及规格修改
     * @param welfareGoodsManageAddDto 商品dto实体类
     * @return java.util.Map
     * @author ChenLong
     * @date 2021-06-01 20:36:22
     **/
    Map<String, Object> updateGoodsManage(WelfareGoodsManageAddDto welfareGoodsManageAddDto);

    /**
     * 导入集采商品
     * @param list 行列表
     * @param adminInfo 登录用户信息
     * @author liuguanjun
     * @date 2021-12-20 11:20:01
     **/
    Integer importJicaiGoodsList(List<List<String>> list, LoginSysAdminVo adminInfo);

    /**
     * 根据分类id等条件获取商品列表，以商品表[welfare_goods]为主表，无关联表（分页）
     * @param query 商品分页查询实体类
     * @author ChenLong
     * @since 2021-05-20 10:27:50
     **/
    PageInfo<WelfareGoodsBaseVo> getGoodsBaseListPage(WelfareGoodsPageQuery query);

    /**
     * 根据装修页面模块id等条件查询获取商品列表，以装修页面模块表[welfare_micro_goods]为主表，关联商品表[welfare_goods]（不分页）
     * @param query 商品分页查询实体类
     * @author ChenLong
     * @since 2021-05-20 10:27:50
     **/
    PageInfo<WelfareGoodsBaseVo> getGoodsListPageByMicroId(WelfareGoodsPageQuery query);

    /**
     * 获取商品列表（通过微页面跳转Id）
     * @author ChenLong
     * @date 2021-08-02 13:58:32
     * @param query query实体
     * @return java.util.List<com.dzl.goods.pojo.vo.WelfareGoodsBaseVo>
     **/
    WelfareMovieInfo getGoodsLinkByMicroIdForMovie(Integer query);

    /**
     * 根据分类获取品牌
     * @param welfareGoodsQuery 商品表查询实体类
     * @return java.util.List<com.dzl.brand.entity.WelfareBrand>
     * @author ChenLong
     * @since 2021-05-18 20:19:16
     **/
    List<WelfareBrand> getBrandListByGoodsQuery(WelfareGoodsPageQuery welfareGoodsQuery);

    /**
     * 获取商品三级分类Id列表（通过分区信息）
     * @author ChenLong
     * @date 2021-08-02 09:42:35
     * @param partitionIdList 分区Id列表
     * @return java.util.List
     **/
    List<Integer> getGoodsThirdClassifyIdsByPartitions(List<Integer> partitionIdList);

    /**
     * 校验地区商品是否支持配送
     * @author ChenLong
     * @date 2021-11-03 14:29:47
     * @param query 查询实体
     * @return boolean
     **/
    boolean validGoodsSupplierDelivery(WelfareGoodsDevAreaQuery query);

    /**
     * 获取商品规格列表
     * @param goodsId 商品id
     * @return java.util.List
     * @author ChenLong
     * @since 2021-05-18 18:05:26
     **/
    List<WelfareGoodsAttr> getWelfareGoodsAttr(Integer goodsId);

    /**
     * 获取商品规格列表
     * @param goodsId 商品id
     * @return java.util.List
     * @author ChenLong
     * @since 2021-05-18 18:05:26
     **/
    List<WelfareGoodsAttr> getWelfareGoodsAttrNoCutLockQuantity(Integer goodsId);

    /**
     * 获取商品规格列表（包括利润率）
     * @param goodsId 商品id
     * @return java.util.List
     * @author wangjian
     * @since 2021-05-18 18:05:26
     **/
    List<WelfareSkuGoodsVo> getWelfareGoodsAttrVo(Integer goodsId);

    /**
     * 商品管理批量更新，上架、下架、改分区、改供应商
     * @param dto 商品管理批量更新实体类
     * @return int
     * @author ChenLong
     * @date 2021-05-29 16:41:21
     **/
    Integer updateGoodsBatchManage(WelfareGoodsBatchUpdateDto dto);

    /**
     * 商品管理批量修改分区
     * @param dto 商品管理批量更新实体类
     * @return int
     * @author ChenLong
     * @date 2021-05-29 16:41:21
     **/
    Integer updateGoodsPartitonBatch(WelfareGoodsBatchUpdateDto dto);

    /**
     * 商品管理批量更新分类
     * @param dto 商品分类实体
     * @return int
     * @author ChenLong
     * @date 2021-05-29 16:41:21
     **/
    Integer updateGoodsClassifyBatch(WelfareGoodsBatchUpdateDto dto);

    /**
     * 商品管理批量更新分类
     * @param dto 商品供应商实体
     * @return int
     * @author ChenLong
     * @date 2021-05-29 16:41:21
     **/
    Integer updateGoodsSupplierBatch(WelfareGoodsBatchUpdateDto dto);

    /**
     * 券密组id查询所有关联的商品名
     * @param voucherGroupId 券密组id
     * @return java.util.List<com.dzl.goods.pojo.WelfareGoods>
     * @date 2021/6/10 17:52
     * @author caobucao
     */
    List<WelfareGoods> selectRelateGoodsNameByGroupId(Integer voucherGroupId);

    /** @param query 查询实体
     * @return List<SearchGoodsListVo>
     * @Description:分页查询商品-中台项目
     * @exception:
     * @author: liufan
     * @time:2021年6月19日 下午3:34:14
     */
    List<SearchGoodsListVo> queryGoodsListByMiddleground(SearchGoodsQuery query);

    /**
     * 批量隐藏（不隐藏）商品
     * @date 2021/7/14 0014 9:33
     * @author wangjian
     * @param goodsIds 商品ID  “，”隔开
     * @param isShow 是否隐藏
     * @return java.lang.Integer
     */
    Integer updateGoodsHide(String goodsIds,Integer isShow);

    /**
     * 修改商品是否同步非自营状态
     * @date 2022/02/26 17:12
     * @author liuguanjun
     * @param platformId 同步商品ID
     * @param syncNonSelfSupport 同步非自营: 1是 0否
     */
    Integer updateGoodsSyncNonSelfSupportStatus(Integer platformId,Integer syncNonSelfSupport);

    /**
     * 更改商品sku成本价
     * @date 2021/10/12 14:25
     * @author caobucao
     * @param list 要更改的成本价list
     * @return java.lang.Integer
     */
    Integer updateGoodsAttrCostPrice(List<WelfareGoodsAttrCostPriceDto> list);


}
